import request from "@/utils/request";

const CODEGEN_BASE_URL = "/wz/table";

class CodeGenAPI {
  /**
   * 获取项目列表
   * @param queryParams
   * @returns
   */
  static getPage(queryParams: CodeGenPageQuery) {
    return request<any, PageResult<CodeGenPageVO[]>>({
      url: CODEGEN_BASE_URL + `/page`,
      method: "get",
      params: queryParams,
    });
  }

  /**
   * 获取详细信息
   * @param queryParams
   * @returns
   */
  static getFormData(id: string) {
    return request<any, TableInfoVO>({
      url: CODEGEN_BASE_URL + `/detail?id=${id}`,
      method: "get",
    });
  }

  /**
   * 获取项目列表
   * @param queryParams
   * @returns
   */
  static import(id: string, tableNameList: string[]) {
    return request({
      url: CODEGEN_BASE_URL + `/import?datasourceId=${id}`,
      method: "post",
      data: tableNameList,
    });
  }

  /**
   * 保存
   * @param queryParams
   * @returns
   */
  static save(dataForm: any) {
    return request({
      url: CODEGEN_BASE_URL + `/update`,
      method: "post",
      data: dataForm,
    });
  }

  /**
   * 删除
   * @param queryParams
   * @returns
   */
  static deleteByIds(ids: string) {
    return request({
      url: CODEGEN_BASE_URL + `/remove?ids=${ids}`,
      method: "post",
    });
  }

  /**
   * 获取详细信息
   * @param queryParams
   * @returns
   */
  static updateField(id: string, tableFieldList: TableFieldInfoVO[]) {
    return request({
      url: CODEGEN_BASE_URL + `/field?tableId=${id}`,
      method: "put",
      data: tableFieldList,
    });
  }

  /**
   * 同步
   * @param queryParams
   * @returns
   */
  static sync(id: string) {
    return request({
      url: CODEGEN_BASE_URL + `/sync?id=${id}`,
      method: "post",
    });
  }
}
export default CodeGenAPI;

/**
 * 项目分页查询对象
 */
export interface CodeGenPageQuery extends PageQuery {
  /** 搜索关键字 */
  tableName?: string;
}

/**
 * 项目分页对象
 */
export interface CodeGenPageVO {
  id?: number;

  /**
   * 字段类型
   */
  columnType?: string;
  /**
   * 属性类型
   */
  attrType?: string;
  /**
   * 属性包名
   */
  packageName?: string;

  /**
   * 创建时间
   */
  createTime?: string;
}

/**
 * 项目分页对象
 */
export interface TableInfoVO {
  id?: number;

  /**
   * 表名
   */
  tableName?: string;
  /**
   * 实体类名称
   */
  className?: string;
  /**
   * 功能名
   */
  tableComment?: string;
  /**
   * 项目包名
   */
  packageName?: string;
  /**
   * 项目版本号
   */
  version?: string;
  /**
   * 作者
   */
  author?: string;
  /**
   * 邮箱
   */
  email?: string;
  /**
   * 生成方式  1：zip压缩包   2：自定义目录
   */
  generatorType?: number;
  /**
   * 后端生成路径
   */
  backendPath?: string;
  /**
   * 前端生成路径
   */
  frontendPath?: string;
  /**
   * 模块名
   */
  moduleName?: string;
  /**
   * 功能名
   */
  functionName?: string;
  /**
   * 表单布局
   */
  formLayout?: number;
  /**
   * 数据源ID
   */
  datasourceId?: number;
  /**
   * 基类ID
   */
  baseclassId?: number;
  /**
   * 创建时间
   */
  createTime?: string;
  /**
   * 字段列表
   */
  fieldList?: TableFieldInfoVO[];
}

/**
 * 项目分页对象
 */
export interface TableFieldInfoVO {
  id?: number;
  /**
   * 表ID
   */
  tableId?: number;
  /**
   * 字段名称
   */
  fieldName?: string;
  /**
   * 排序
   */
  sort?: number;
  /**
   * 字段类型
   */
  fieldType?: string;
  /**
   * 字段说明
   */
  fieldComment?: string;
  /**
   * 属性名
   */
  attrName?: string;
  /**
   * 属性类型
   */
  attrType?: string;
  /**
   * 属性包名
   */
  packageName?: string;
  /**
   * 自动填充
   */
  autoFill?: string;
  /**
   * 主键 0：否  1：是
   */
  primaryPk?: boolean;
  /**
   * 基类字段 0：否  1：是
   */
  baseField?: boolean;
  /**
   * 表单项 0：否  1：是
   */
  formItem?: boolean;
  /**
   * 表单必填 0：否  1：是
   */
  formRequired?: boolean;
  /**
   * 表单类型
   */
  formType?: string;
  /**
   * 表单字典类型
   */
  formDict?: string;
  /**
   * 表单效验
   */
  formValidator?: string;
  /**
   * 列表项 0：否  1：是
   */
  gridItem?: boolean;
  /**
   * 列表排序 0：否  1：是
   */
  gridSort?: boolean;
  /**
   * 查询项 0：否  1：是
   */
  queryItem?: boolean;
  /**
   * 查询方式
   */
  queryType?: string;
  /**
   * 查询表单类型
   */
  queryFormType?: string;
}
